package copyFileLearn

import (
	"bufio"
	"flag"
	"fmt"
	"log"
	"os"
)

func main() {
	//s := fmt.Sprintf("dbhost:127.0.0.1,dbport:3306,dbuser:root,dbpwd:12345600000\n" +
	//	"time=%v",time.Now().String())
	//PrintContentsToFile(s)
	var src, des string
	flag.StringVar(&src, "src", "sourceName", "源文件")
	flag.StringVar(&des, "des", "desName", "copy文件")
	flag.Parse()
	copyFile(src, des)
}
func isExist(fileName string) bool {
	_, e := os.Stat(fileName)
	// 如果错误存在，那就返回了 说明该文件不存在，
	if os.IsExist(e) {
		return true
	} else {
		//else 就说明没有错误，文件是存在的
		return false
	}

}
func copyFile(sourceFile, desFile string) {
	if isExist(sourceFile) {
		return
	}
	srcfile, e := os.Open(sourceFile)
	if e != nil {
		log.Println(e)
		return
	}
	defer srcfile.Close()
	desfile, e := os.Create(desFile)
	if e != nil {
		log.Println(e)
		return
	}
	defer desfile.Close()
	r := bufio.NewReader(srcfile)
	//接受10k 的大小数据
	content := make([]byte, 1024*10)
	n, e := r.Read(content)
	//以string 的格式输出
	data := string(content[:n])
	log.Println(data)
	//创建一个写的bufio
	w := bufio.NewWriter(desfile)
	//写完数据进行 flush
	defer w.Flush()
	// 向io 中写数据
	fmt.Fprintln(w, data)
}
func PrintContentsToFile(s string) {
	path := "test.txt"
	var file *os.File
	var err error
	file, err = os.OpenFile(path, os.O_RDWR, os.ModePerm)
	if os.IsNotExist(err) {
		file, err = os.Create(path)
		if err != nil {
			panic(fmt.Sprintf("create file err %v", err))
		}
	}
	defer file.Close()
	w := bufio.NewWriter(file)
	//写数据之后 进行flush
	defer w.Flush()
	n, err := fmt.Fprintln(w, s)
	if err != nil {
		panic(fmt.Sprintf("writer err %#v", err))
	}
	fmt.Println(n)
}
